// 创建一个 Set 存储所有订阅者
const subscribers = new Set();

// 假设有一个更新父组件 state 的方法
function updateParentComponentState(newState) {
  // 这里应当根据实际情况替换为你实际更新组件 state 的方法
  // 例如，在 React Hooks 中可能是 setState 或使用 useContext、useSelector 等
}

/*
  dva 通过 model 的概念把一个领域的模型管理起来，包含同步更新 state 的 reducers，处理异步逻辑的 effects，订阅数据源的 subscriptions 。
 */
export default {
  namespace: 'projectDetail', // namespace 表示在全局 state 上的 key，基本和你的 ts/js 文件名保持一致
  state: [], // state是你希望保存和修改并且可以传递到其他组件的全局状态
  reducers: { // reducers 等同于 redux 里的 reducer，接收 action，同步更新 state
    'detailShow'(preState: any, {payload: data}) {
      if (preState === undefined) return null;
      // 解构出action动作对象中的两个属性赋给type和data变量
      return {
        ...preState,
        projectDetail: data
      }
    },
    'detailClose'(preState: any, {payload: data}) {
      if (preState === undefined) return null;
      return {
        ...preState,
        projectDetail: []
      }
    },
  },
  subscriptions: {
    // 订阅，在这里我的理解就是监听页面的，比如监听到进入了某某页面就让它执行相关代码之类的
  },
  effect: {
    // 网络请求都写在这里，也可以写数据筛选之类的方法
  }
};
